package com.easylinkin.linkappapi.progress.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 进度预警
 * </p>
 *
 * @author zhengwen
 * @since 2023-11-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("app_progress_warn")
public class ProgressWarn extends Model<ProgressWarn> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键，自增
     */
    @TableId(value = "id_", type = IdType.AUTO)
    private Long id;

    /**
     * 进度计划、任务id
     */
    @TableField("progress_id_")
    private Long progressId;

    /**
     * 实际开始时间
     */
    @TableField("real_start_time_")
    private Date realStartTime;

    /**
     * 实际结束时间
     */
    @TableField("real_end_time_")
    private Date realEndTime;

    /**
     * 真实进度百分比
     */
    @TableField("real_percentage_")
    private Double realPercentage;

    /**
     * 预警状态，1提前，2正常，3滞后
     *
     */
    @TableField("warn_state_")
    private Integer warnState;

    /**
     * 开始状态，1未开始，2应开始未开始，3进行中，4已完成
     * 任务没有进度详情，在应开始任务在计划开始日期未开始,直接就是有进度风险
     */
    @TableField("start_state_")
    private Integer startState;

    /**
     * 计划工期（冗余）
     */
    @TableField("plan_work_day_")
    private Integer planWorkDay;

    /**
     * 创建人
     */
    @TableField("creator_")
    private String creator;

    /**
     * 创建时间
     */
    @TableField("create_time_")
    private Date createTime;

    /**
     * 修改人
     */
    @TableField("modifier_")
    private String modifier;

    /**
     * 修改时间
     */
    @TableField("modify_time_")
    private Date modifyTime;

    /**
     * 是否删除，0否，1是
     */
    @TableField("deleted_")
    @TableLogic(value = "0", delval = "1")
    private Integer deleted;

    /**
     * 提前或滞后天数
     */
    @TableField(exist = false)
    private Long warnDay;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
